Virtualization technology's emergence as a core Infrastructure as a Service (IaaS) backbone for variety of cloud deployments is known. Over the period of about the last 10 years, advances in x86 hardware assists have paved the way for performance and scalability focused virtualization solutions. Hypervisors, otherwise known as virtual machine monitors (VMMs) employ software instruction intercept mechanisms to emulate a central processing unit (CPU), memory and IO resources for an operating system (OS) to run as a guest. A properly written VMM may provide reliable, secure and accurate systemic view to the guest OS.
VMMs may use para-virtualization for guaranteeing coherent CPU, memory and IO response. For CPU virtualization, prior to virtualization technology (VT) extension implementations, VMMs such as VMWare/Xen used emulated basic input/output system (BIOS), CPU schedulers, and elaborate ring and instruction emulation to “trap and execute” virtual instructions on real CPU cores. However, modern day CPUs may take care of guest vs. root partitioning and offload CPU virtualization responsibility from VMMs. This is usually achieved by providing CPU instructions to “batch” executed set of instructions from the guest on physical CPU. Dominant x86 architectures, such as those produced by Intel® and AMD® provide secure virtual machine (SVM)/Virtual Machine Extension (VMX) instructions for VMENTER/VMEXIT operations. Furthermore, CPUs are adding improvements, such as Tagged-Translation Lookaside buffers (TLB), Pause-Loop Exiting (PLE), and Virtual Processor Identifiers (VPID) to reduce the number of CPU cycles required for guest CPU sharing. Memory optimization may be further focused on reducing guest page iterations via page table shadowing, optimizing guest address translations and overheads caused by VMEXIT.
IO virtualization remains an important area for improving virtualized IO performance and scalability, and network IO is one of the core areas within network virtualization where substantial focus has been applied. Hardware based virtualization techniques, such as multi-queues, Intel based Virtualization Technology for Direct Device Connect (VT-d), Single Root IO Virtualization (SR-IOV) and their software-based virtualization end points, such as Xen isolated driver domain (IDD) and NetChannel2, have been applied to improve overall Network Interface Card (NIC) performance per guest, however, there still remains room for improvement in areas such as CPU loading, infrastructure cost, and data security.